import 'package:json_annotation/json_annotation.dart';

part 'videoListModel.g.dart';


@JsonSerializable()
class VideoDetailModel extends Object{

  @JsonKey(name: 'code')
  int code;

  @JsonKey(name: 'message')
  String message;

  @JsonKey(name: 'result')
  List<VideoResult> result;

  VideoDetailModel(this.code,this.message,this.result,);

  factory VideoDetailModel.fromJson(Map<String, dynamic> srcJson) => _$VideoDetailModelFromJson(srcJson);

}


@JsonSerializable()
class VideoResult extends Object{

  @JsonKey(name: 'data')
  Data data;

  @JsonKey(name: 'adIndex')
  int adIndex;

  @JsonKey(name: 'id')
  int id;

  @JsonKey(name: 'type')
  String type;

  VideoResult(this.data,this.adIndex,this.id,this.type,);

  factory VideoResult.fromJson(Map<String, dynamic> srcJson) => _$VideoResultFromJson(srcJson);

}


@JsonSerializable()
class Data extends Object{

  @JsonKey(name: 'dataType')
  String dataType;

  @JsonKey(name: 'header')
  Header header;

  @JsonKey(name: 'content')
  Content content;

  Data(this.dataType,this.header,this.content,);

  factory Data.fromJson(Map<String, dynamic> srcJson) => _$DataFromJson(srcJson);

}


@JsonSerializable()
class Header extends Object{

  @JsonKey(name: 'textAlign')
  String textAlign;

  @JsonKey(name: 'actionUrl')
  String actionUrl;

  @JsonKey(name: 'icon')
  String icon;

  @JsonKey(name: 'description')
  String description;

  @JsonKey(name: 'showHateVideo')
  bool showHateVideo;

  @JsonKey(name: 'title')
  String title;

  @JsonKey(name: 'iconType')
  String iconType;

  @JsonKey(name: 'id')
  int id;

  @JsonKey(name: 'time')
  int time;

  Header(this.textAlign,this.actionUrl,this.icon,this.description,this.showHateVideo,this.title,this.iconType,this.id,this.time,);

  factory Header.fromJson(Map<String, dynamic> srcJson) => _$HeaderFromJson(srcJson);

}


@JsonSerializable()
class Content extends Object{

  @JsonKey(name: 'data')
  DetailData data;

  @JsonKey(name: 'adIndex')
  int adIndex;

  @JsonKey(name: 'id')
  int id;

  @JsonKey(name: 'type')
  String type;

  Content(this.data,this.adIndex,this.id,this.type,);

  factory Content.fromJson(Map<String, dynamic> srcJson) => _$ContentFromJson(srcJson);

}


@JsonSerializable()
class DetailData extends Object{

  @JsonKey(name: 'date')
  int date;

  @JsonKey(name: 'releaseTime')
  int releaseTime;

  @JsonKey(name: 'description')
  String description;

  @JsonKey(name: 'remark')
  String remark;

  @JsonKey(name: 'collected')
  bool collected;

  @JsonKey(name: 'title')
  String title;

  @JsonKey(name: 'type')
  String type;

  @JsonKey(name: 'playUrl')
  String playUrl;

  @JsonKey(name: 'cover')
  Cover cover;

  @JsonKey(name: 'duration')
  int duration;

  @JsonKey(name: 'library')
  String library;

  @JsonKey(name: 'descriptionEditor')
  String descriptionEditor;

  @JsonKey(name: 'provider')
  Provider provider;

  @JsonKey(name: 'id')
  int id;

  @JsonKey(name: 'descriptionPgc')
  String descriptionPgc;

  @JsonKey(name: 'titlePgc')
  String titlePgc;

  @JsonKey(name: 'subtitles')
  List<dynamic> subtitles;

  @JsonKey(name: 'ad')
  bool ad;

  @JsonKey(name: 'author')
  Author author;

  @JsonKey(name: 'dataType')
  String dataType;

  @JsonKey(name: 'searchWeight')
  int searchWeight;

  @JsonKey(name: 'consumption')
  Consumption consumption;

  @JsonKey(name: 'played')
  bool played;

  @JsonKey(name: 'tags')
  List<Tags> tags;

  @JsonKey(name: 'labelList')
  List<dynamic> labelList;

  @JsonKey(name: 'playInfo')
  List<PlayInfo> playInfo;

  @JsonKey(name: 'ifLimitVideo')
  bool ifLimitVideo;

  @JsonKey(name: 'webUrl')
  WebUrl webUrl;

  @JsonKey(name: 'category')
  String category;

  @JsonKey(name: 'idx')
  int idx;

  @JsonKey(name: 'resourceType')
  String resourceType;

  DetailData(this.date,this.releaseTime,this.description,this.remark,this.collected,this.title,this.type,this.playUrl,this.cover,this.duration,this.library,this.descriptionEditor,this.provider,this.id,this.descriptionPgc,this.titlePgc,this.subtitles,this.ad,this.author,this.dataType,this.searchWeight,this.consumption,this.played,this.tags,this.labelList,this.playInfo,this.ifLimitVideo,this.webUrl,this.category,this.idx,this.resourceType,);

  factory DetailData.fromJson(Map<String, dynamic> srcJson) => _$DetailDataFromJson(srcJson);

}


@JsonSerializable()
class Cover extends Object{

  @JsonKey(name: 'feed')
  String feed;

  @JsonKey(name: 'detail')
  String detail;

  @JsonKey(name: 'blurred')
  String blurred;

  Cover(this.feed,this.detail,this.blurred,);

  factory Cover.fromJson(Map<String, dynamic> srcJson) => _$CoverFromJson(srcJson);

}


@JsonSerializable()
class Provider extends Object{

  @JsonKey(name: 'name')
  String name;

  @JsonKey(name: 'icon')
  String icon;

  @JsonKey(name: 'alias')
  String alias;

  Provider(this.name,this.icon,this.alias,);

  factory Provider.fromJson(Map<String, dynamic> srcJson) => _$ProviderFromJson(srcJson);

}


@JsonSerializable()
class Author extends Object{

  @JsonKey(name: 'shield')
  Shield shield;

  @JsonKey(name: 'expert')
  bool expert;

  @JsonKey(name: 'approvedNotReadyVideoCount')
  int approvedNotReadyVideoCount;

  @JsonKey(name: 'icon')
  String icon;

  @JsonKey(name: 'link')
  String link;

  @JsonKey(name: 'description')
  String description;

  @JsonKey(name: 'videoNum')
  int videoNum;

  @JsonKey(name: 'follow')
  Follow follow;

  @JsonKey(name: 'recSort')
  int recSort;

  @JsonKey(name: 'name')
  String name;

  @JsonKey(name: 'ifPgc')
  bool ifPgc;

  @JsonKey(name: 'latestReleaseTime')
  int latestReleaseTime;

  @JsonKey(name: 'id')
  int id;

  Author(this.shield,this.expert,this.approvedNotReadyVideoCount,this.icon,this.link,this.description,this.videoNum,this.follow,this.recSort,this.name,this.ifPgc,this.latestReleaseTime,this.id,);

  factory Author.fromJson(Map<String, dynamic> srcJson) => _$AuthorFromJson(srcJson);

}


@JsonSerializable()
class Shield extends Object{

  @JsonKey(name: 'itemId')
  int itemId;

  @JsonKey(name: 'itemType')
  String itemType;

  @JsonKey(name: 'shielded')
  bool shielded;

  Shield(this.itemId,this.itemType,this.shielded,);

  factory Shield.fromJson(Map<String, dynamic> srcJson) => _$ShieldFromJson(srcJson);

}


@JsonSerializable()
class Follow extends Object{

  @JsonKey(name: 'itemId')
  int itemId;

  @JsonKey(name: 'itemType')
  String itemType;

  @JsonKey(name: 'followed')
  bool followed;

  Follow(this.itemId,this.itemType,this.followed,);

  factory Follow.fromJson(Map<String, dynamic> srcJson) => _$FollowFromJson(srcJson);

}


@JsonSerializable()
class Consumption extends Object{

  @JsonKey(name: 'shareCount')
  int shareCount;

  @JsonKey(name: 'replyCount')
  int replyCount;

  @JsonKey(name: 'collectionCount')
  int collectionCount;

  Consumption(this.shareCount,this.replyCount,this.collectionCount,);

  factory Consumption.fromJson(Map<String, dynamic> srcJson) => _$ConsumptionFromJson(srcJson);

}


@JsonSerializable()
class Tags extends Object{

  @JsonKey(name: 'tagRecType')
  String tagRecType;

  @JsonKey(name: 'headerImage')
  String headerImage;

  @JsonKey(name: 'name')
  String name;

  @JsonKey(name: 'actionUrl')
  String actionUrl;

  @JsonKey(name: 'communityIndex')
  int communityIndex;

  @JsonKey(name: 'id')
  int id;

  @JsonKey(name: 'bgPicture')
  String bgPicture;

  @JsonKey(name: 'desc')
  String desc;

  Tags(this.tagRecType,this.headerImage,this.name,this.actionUrl,this.communityIndex,this.id,this.bgPicture,this.desc,);

  factory Tags.fromJson(Map<String, dynamic> srcJson) => _$TagsFromJson(srcJson);

}


@JsonSerializable()
class PlayInfo extends Object{

  @JsonKey(name: 'width')
  int width;

  @JsonKey(name: 'name')
  String name;

  @JsonKey(name: 'urlList')
  List<UrlList> urlList;

  @JsonKey(name: 'type')
  String type;

  @JsonKey(name: 'url')
  String url;

  @JsonKey(name: 'height')
  int height;

  PlayInfo(this.width,this.name,this.urlList,this.type,this.url,this.height,);

  factory PlayInfo.fromJson(Map<String, dynamic> srcJson) => _$PlayInfoFromJson(srcJson);

}


@JsonSerializable()
class UrlList extends Object{

  @JsonKey(name: 'size')
  int size;

  @JsonKey(name: 'name')
  String name;

  @JsonKey(name: 'url')
  String url;

  UrlList(this.size,this.name,this.url,);

  factory UrlList.fromJson(Map<String, dynamic> srcJson) => _$UrlListFromJson(srcJson);

}


@JsonSerializable()
class WebUrl extends Object{

  @JsonKey(name: 'forWeibo')
  String forWeibo;

  @JsonKey(name: 'raw')
  String raw;

  WebUrl(this.forWeibo,this.raw,);

  factory WebUrl.fromJson(Map<String, dynamic> srcJson) => _$WebUrlFromJson(srcJson);

}


